home *** CD-ROM | disk | FTP | other *** search
Wrap
/*////////////////////////////////////////////////////////////////////// filename: ws_except.js copyright(c): 2002, 2003 Tiny Software Inc (http://www.tinysoftware.com) author: Martin Navratil (mnavratil@tinysoftware.com) product: Tiny Firewall Pro 6.x, Policy Editor description: javascript functions for ws_except.html ///////////////////////////////////////////////////////////////////////*/ var ERR_GET_MODULE_PARSER = "Error: Cannot get Parser object for Sandbox ", HTML_TABLE_HEADER = '<table width="100%" border="1" cellpadding=0 cellspacing=0 bordercolor="#000000">', HTML_TABLE_TRAILER = "</table>", HTML_TABLE_LABEL_HEADER1 = "<table width=100% border=0 cellspacing=0 cellpadding=0><tr bgcolor=", HTML_TABLE_LABEL_HEADER2 = "><td height=25 align=middle><font color=black><B>", HTML_TABLE_LABEL_TRAILER = "</B></font></td></tr></table>", HTML_ROW_HEADER = "<TR>", HTML_ROW_TRAILER = "</TR>", HTML_HEADER_HEADER = '<th class="tdclass" style="font-face:bold; font-size:8pt;">', HTML_LASTHEADER_HEADER = '<th colspan=2 align=left class="tdclass" style="font-face:bold; font-size:8pt;">', HTML_HEADER_TRAILER = "</th>", HTML_CELL_HEADER = "<TD align=center class=tdclass>", HTML_CELL_TRAILER = "</TD>", HTML_ID_LINK_HEADER = '<A href=# onclick=\'', HTML_ID_LINK_TRAILER = '</A>', HTML_INSERT_USER_EXCEPTION = '<IMG src="ico-plus.gif" align=absMiddle alt = "Exception for non-system processes"/> Exception for non-system processes', HTML_INSERT_SYSTEM_EXCEPTION = '<IMG src="ico-plus.gif" align=absMiddle alt = "Exception for system processes"/> Exception for system processes', HTML_ADD_EXISTING = '<IMG src="ico-plus.gif" align=absMiddle alt = "Add existing exception"/> Add existing exception', HTML_ICO_MINUS = '<IMG src="ico-minus.gif" alt="Delete exception"/>', HTML_SELECT_HEADER = '<SELECT ', HTML_SELECT_TRAILER = '></SELECT>', HTML_EDIT_HEADER = '<INPUT type=edit ', HTML_EDIT_TRAILER = '</INPUT>', HTML_DISABLED = 'disabled'; var NO_GUARDS = 7; var NO_COLUMNS = NO_GUARDS + 2; var RA_USER = 0, RA_SYSTEM = RA_USER + 1, RA_BOTH = RA_SYSTEM + 1; var TXT_PRO_HIGH_MASTER = "Common exceptions", TXT_CLIENT = "Medium Priority List - Non-Privileged user Defined", TXT_PRO_LOW_MASTER = "Low Priority List - Common exceptions", TXT_DELETING = "Deleting exception", TXT_QST_REALLYDELETE1 = 'Do you really want to delete ', TXT_QST_REALLYDELETE2 = ' from the list of active guards?', TXT_NEW_EXC_APP = 'Enter app./group', // columns TXT_APP_CAPTION = "Guards active for the application or group", TXT_FIL_CAPTION = "File", TXT_SRV_GUARD = "Services Control", TXT_REG_GUARD = "Registry", TXT_SPW_GUARD = "Application Spawning", TXT_DLL_GUARD = "DLL Loading", // TXT_DEV_GUARD = "Device", TXT_VBA_GUARD = "VBA macro", TXT_COM_GUARD = "OLE/COM Control", TXT_SPR_GUARD = "System privileges", TXT_DPR_GUARD = "Device privilege", TXT_ASSIGNMENT = (iManaged||iContext ? "Assignment" : "Users"); TXT_ALLUSERS = "All Users (*)", TXT_APPALL_USER = "All(*)", TXT_APPALL_SYSTEM = "System All(*)"; var GUARD_FILE = 0x00000001, GUARD_SERVICE = 0x00000002, GUARD_REGISTRY = 0x00000004, GUARD_SPAWNING = 0x00000008, GUARD_DEVICE = 0x00000010, GUARD_VBAMACRO = 0x00000020, GUARD_COMOBJECT = 0x00000040, GUARD_SYSTEMPRIV = 0x00000080, GUARD_DEVICEPRIV = 0x00000100, GUARD_DLL = 0x00020000, GUARD_ALL = GUARD_FILE + GUARD_SERVICE + GUARD_REGISTRY + GUARD_SPAWNING + GUARD_COMOBJECT + GUARD_SYSTEMPRIV + GUARD_DLL; var arrGuards = new Array( GUARD_FILE, GUARD_REGISTRY, GUARD_SPAWNING, GUARD_DLL, GUARD_COMOBJECT, GUARD_SERVICE, GUARD_SYSTEMPRIV); var PRIOR_LOW = 0, PRIOR_NORMAL = 1, PRIOR_HIGH = 2; var arrLinksApp = new Array(); var iLastIndex = -1; var strAsgnmt = ""; var enter_pressed = 0; var strHeaders = new Array(NO_COLUMNS), strDisabled = new Array(3); strHeaders[0] = TXT_APP_CAPTION; strHeaders[1] = TXT_FIL_CAPTION; strHeaders[2] = TXT_REG_GUARD; strHeaders[3] = TXT_SPW_GUARD; strHeaders[4] = TXT_DLL_GUARD; strHeaders[5] = TXT_COM_GUARD; strHeaders[6] = TXT_SRV_GUARD; strHeaders[7] = TXT_SPR_GUARD; strHeaders[8] = TXT_ASSIGNMENT; strHeaders[9] = ""; var arrExcept = new Array(), arrLabelTypes = new Array(), arrExceptIndex = 0; var ServerParser, ClientParser, ServerAppParser, ClientAppParser; var iProductType = window.external.ProductType; //function SetAssignment(str) //{ // strAsgnmt = str; // _excList.innerHTML = GetExceptionList(); //} function GetExceptionList() { var Option, OptList, strExcepts; strExcepts = ""; strDisabled[PRIOR_HIGH] = ""; strDisabled[PRIOR_LOW] = ""; if ((iContext == 0 && iManaged == 1) || !bIsAdmin) { strDisabled[PRIOR_HIGH] = HTML_DISABLED; strDisabled[PRIOR_LOW] = HTML_DISABLED; } else { strDisabled[PRIOR_HIGH] = ''; strDisabled[PRIOR_LOW] = ''; } strDisabled[PRIOR_NORMAL] = ''; if (ServerParser != null) strExcepts += GetExcListSingleParser(ServerParser, PRIOR_HIGH, "Server") + "<BR/><BR/>"; return strExcepts; } function GetExcListSingleParser(Parser, prio, ParserName) { var strRetVal = '<table width="400" border="0"><tr>'; strRetVal += '<td width=200><A href="#" style="color: Black; text-decoration: none;" ' + strDisabled[prio] + ' '; if (strDisabled[prio] == '') strRetVal += 'onclick="OnAdd(' + prio + ', ' + RA_USER + ')"'; strRetVal += '>' + HTML_INSERT_USER_EXCEPTION + '</A></td>'; strRetVal += '<td width=200><A href="#" style="color: Black; text-decoration: none;" ' + strDisabled[prio] + ' '; if (strDisabled[prio] == '') strRetVal += 'onclick="OnAdd(' + prio + ', ' + RA_SYSTEM + ')"'; strRetVal += '>' + HTML_INSERT_SYSTEM_EXCEPTION + '</A></td>'; if (iContext == 1) { strRetVal += '<td><A href="#" style="color: Black; text-decoration: none;" '; if (strDisabled[prio] == "") strRetVal += 'onclick="ShowAddExceptDlg()"'; strRetVal += strDisabled[prio] + '>' + HTML_ADD_EXISTING + '</A></td></tr></table>'; } else strRetVal += '</tr></table>'; strRetVal += HTML_TABLE_HEADER; if (Parser == null) { strRetVal = ERR_GET_MODULE_PARSER + "(" + ParserName + ")"; return strRetVal; } strRetVal += HTML_ROW_HEADER; var i; if (iManaged == 0 /* Home Version */ && prio != PRIOR_NORMAL || iManaged == 1 && iContext == 1 /* BBE */) for (i = 0; i < NO_COLUMNS; i++) { // last column has span==2 if (i < NO_COLUMNS) strRetVal += HTML_HEADER_HEADER + strHeaders[i] + HTML_HEADER_TRAILER; else strRetVal += HTML_LASTHEADER_HEADER + strHeaders[i] + HTML_HEADER_TRAILER; } else for (i = 0; i < NO_COLUMNS - 1; i++) { if (i < NO_COLUMNS - 2) strRetVal += HTML_HEADER_HEADER + strHeaders[i] + HTML_HEADER_TRAILER; else strRetVal += HTML_LASTHEADER_HEADER + strHeaders[i] + HTML_HEADER_TRAILER; } strRetVal += HTML_ROW_TRAILER; ExcList = new Enumerator(Parser.AppExceptionList); ExcList.moveFirst(); i = arrExcept.length; while (!ExcList.atEnd()) { //add option to array var except = ExcList.item(); if (except.Priority == prio) { arrExcept[i++] = except; strRetVal += GetExceptStr(except, prio, arrExceptIndex++); } ExcList.moveNext(); //Get next exception } strRetVal += HTML_TABLE_TRAILER; return strRetVal; } function GetExceptStr(appExcept, prio, index) { var strApp = HTML_ROW_HEADER; var strAppName = appExcept.Application; var excAsgnmt = appExcept.Assignment; if (strAppName == '*') { if (RA_USER == appExcept.Account) strAppName = TXT_APPALL_USER; else strAppName = TXT_APPALL_SYSTEM; } //filter by assignemnt switch (iContext) { case 0: excAsgnmt = excAsgnmt.toLowerCase( ); if (excAsgnmt != "*" && strAsgnmt != TXT_ALLUSERS && excAsgnmt.indexOf(strAsgnmt.toLowerCase( )) == -1) { return ""; } break; case 1: if (!ctrlAsgnmt.CheckRule(excAsgnmt)) { return ""; } break; } // adding some display about the System/User/Both accounts var strSysFlag = ""; if (appExcept.Application != '*' && appExcept.AppType == AT_LABEL) { switch (appExcept.Account) { case RA_USER: strSysFlag += ""; break; case RA_SYSTEM: strSysFlag += " $"; break; case RA_BOTH: strSysFlag += " +$"; break; } } if (strAppName == '') { strApp += HTML_CELL_HEADER + GetLabelListHtmlStr(prio, appExcept.Account, 'SELECT_' + index, strAppName, index) + strSysFlag + HTML_CELL_TRAILER; appExcept.Application = '*'; } else { strApp += HTML_CELL_HEADER; var strLinkApp = HTML_ID_LINK_HEADER; if (strDisabled[prio] == "") strLinkApp += 'AppComboCleanup('+index+');this.outerHTML=GetLabelListHtmlStr(' + prio + ',' + appExcept.Account + ', "SELECT_' + index + '","' + strAppName + '",' + index +')\' '; else strLinkApp += '\' '; strLinkApp += strDisabled[prio] + '>' + strAppName + HTML_ID_LINK_TRAILER; arrLinksApp[index] = strLinkApp; strApp += strLinkApp + strSysFlag + HTML_CELL_TRAILER; } var lGuards = appExcept.ActiveGuards; for (j = 0; j < NO_GUARDS; j++) { // for (i = GUARD_FILE; i <= GUARD_DEVICEPRIV; i *= 2) i = arrGuards[j]; // VBA guard is currently disabled if (GUARD_VBAMACRO == i || GUARD_DEVICE == i) continue; var strGuard = ((lGuards & i) > 0) ? " checked=1 " : ""; strApp += HTML_CELL_HEADER + "<INPUT type=checkbox " + strGuard + 'onclick="OnGuardChange(' + index + "," + i + ')" ' + strDisabled[prio] + "></INPUT>" + HTML_CELL_TRAILER; } if (iManaged == 0 /* Home Version */ && prio != PRIOR_NORMAL || iManaged == 1 && iContext == 1 /* BBE */) { var strAsgnDisabled = strDisabled[prio]; if (iProductType == 1) strAsgnDisabled = HTML_DISABLED; strApp += HTML_CELL_HEADER; if (iManaged) { strApp += HTML_EDIT_HEADER + ' value="' + appExcept.Assignment + '"' + ' onchange="OnAsgnmtChange(' + index + ',this.value);" ' + strAsgnDisabled + HTML_EDIT_TRAILER; } else { strApp += HTML_ID_LINK_HEADER; if (strAsgnDisabled == '') strApp += 'OnUsersChange(' + index +'); \' '; else strApp += '\' '; strApp += strAsgnDisabled + '>' + appExcept.Assignment + HTML_ID_LINK_TRAILER; } strApp += HTML_CELL_TRAILER; // strApp += HTML_CELL_HEADER + HTML_EDIT_HEADER + 'onchange="OnAsgnmtChange(' + index + ',this.value);" value="'; // strApp += appExcept.Assignment + '" ' + strAsgnDisabled + '/>' + HTML_CELL_TRAILER; } strApp += HTML_CELL_HEADER + '<A href="#" '; if (strDisabled[prio] == '') strApp += 'onclick="OnDelete(' + prio + ',' + index + ')"'; strApp += '>' + HTML_ICO_MINUS + HTML_CELL_TRAILER + HTML_ROW_TRAILER; return strApp; } function OnGuardChange(index, guard) { try { var appExcept = arrExcept[index]; var mask = appExcept.ActiveGuards; mask ^= guard; appExcept.ActiveGuards = mask; } catch(e) { alert("Access violation"); } } function OnAdd(priority, account) { var Parser; switch (priority) { case PRIOR_HIGH: case PRIOR_LOW: Parser = ServerParser; break; case PRIOR_NORMAL: Parser = ClientParser; } try { var excList = Parser.AppExceptionList; var newExc = excList.CreateAppException(); newExc.Application = ''; newExc.Priority = priority; newExc.Assignment = (iContext ? ctrlAsgnmt.Assignment : "*"); newExc.ActiveGuards = GUARD_ALL; newExc.Account = account; excList.Insert(newExc); } catch (e) { alert("Access violation"); } _excList.innerHTML = GetExceptionList(); } function AppComboCleanup(index) { var iIndex = parseInt(index); if (document.getElementById) { var combo = document.getElementById("SELECT_"+iLastIndex); if (combo) { combo.outerHTML = arrLinksApp[iLastIndex]; } } iLastIndex = iIndex; } function OnDelete(priority, index) { var except = arrExcept[index]; var strNewAsgnmt = ""; var curStrAsgnmt = (iContext ? ctrlAsgnmt.Assignment : strAsgnmt); if (iContext == 1 && !ctrlAsgnmt.IsEmptyOrAll(curStrAsgnmt)) { strNewAsgnmt = ctrlAsgnmt.Remove(except.Assignment); except.Assignment = strNewAsgnmt; } if (iContext == 0 || strNewAsgnmt == "") { var arg = new Array(2); arg[0] = TXT_QST_REALLYDELETE1 + '"' + arrExcept[index].Application + '"' + TXT_QST_REALLYDELETE2; arg[1] = TXT_DELETING; var answer=showModalDialog('question.html', arg, 'dialogWidth=300pt;dialogHeight=100pt;'); if (answer == 0) return; var Parser; switch (priority) { case PRIOR_HIGH: case PRIOR_LOW: Parser = ServerParser; break; case PRIOR_NORMAL: Parser = ClientParser; } try { var excList = Parser.AppExceptionList; excList.Remove(arrExcept[index]); } catch (e) { alert("Access violation"); } } _excList.innerHTML = GetExceptionList(); } function OnAppChange(prio, elem, index, value) { var i; try { arrExcept[index].Application = value; arrExcept[index].AppType = arrLabelTypes[value]; } catch (e) { alert("Access violation"); } var strLinkApp = HTML_ID_LINK_HEADER; if (strDisabled[prio] == "") strLinkApp += 'AppComboCleanup('+index+');this.outerHTML=GetLabelListHtmlStr(' + prio + ',' + arrExcept[index].Account + ', "SELECT_' + index + '","' + value + '",' + index +');\' '; else strLinkApp += '"" '; strLinkApp += strDisabled[prio] + '>' + value + HTML_ID_LINK_TRAILER; arrLinksApp[index] = strLinkApp; elem.outerHTML = strLinkApp; } function OnAsgnmtChange(index, value) { var appExcept = arrExcept[index]; try { appExcept.Assignment = value; _excList.innerHTML = GetExceptionList(); } catch (e) { alert("Access violation"); } } function OnUsersChange(index) { var appExcept = arrExcept[index]; var strNewUsers = showModalDialog('UsersDlg.html', new Array(appExcept.Assignment), 'dialogWidth=215pt;dialogHeight=200pt;'); try { appExcept.Assignment = strNewUsers; _excList.innerHTML = GetExceptionList(); } catch (e) { alert("Access violation"); } } function OnKeyDown() { var k = window.event.keyCode; if (13 == k) { enter_pressed = 1; window.event.srcElement.click(); } return k; }